home *** CD-ROM | disk | FTP | other *** search
/ AmigActive 26 / AACD 26.iso / AACD / System / XFD / Developer / Sources / ASM / MagneticFieldsCruncher.a < prev    next >
Encoding:
Text File  |  2001-09-16  |  33.3 KB  |  1,957 lines

  1. *******************************************************
  2. **             XFD external decruncher               **
  3. **          for Magnetic Fields Cruncher             **
  4. **             adapted by Wanted Team                **
  5. *******************************************************
  6.  
  7.     INCLUDE    "AINCLUDE:IncDirs.i"
  8.     INCLUDE    "libraries/xfdmaster.i"
  9.  
  10. ; xfdForeman structure MUST be first thing in all external decrunchers
  11.  
  12. ForeMan        moveq    #-1,d0        ;security
  13.         rts
  14.         dc.l    XFDF_ID        ;id
  15.         dc.w    1        ;version
  16.         dc.w    0
  17.         dc.l    0,0        ;private
  18.         dc.l    S_SQ        ;first slave
  19.  
  20. **************************************************
  21.  
  22. ; xfdSlave structure: this one doesn't support data scanning
  23.  
  24. S_SQ        dc.l    S_SP        ;next slave
  25.         dc.w    2        ;version
  26.         dc.w    39        ;master version
  27.         dc.l    N_SQ        ;name
  28.         dc.w    XFDPFF_DATA!XFDPFF_RECOGLEN!XFDPFF_USERTARGET
  29.         dc.w    0
  30.         dc.l    RB_SQ        ;recog buffer
  31.         dc.l    DB_SFSQ        ;decrunch buffer
  32.         dc.l    0        ;recog segment
  33.         dc.l    0        ;decrunch segment
  34.         dc.w    0
  35.         dc.w    XFDID_SACFPQCruncher
  36.         dc.l    12+2
  37.  
  38. S_SP        dc.l    S_SF        ;next slave
  39.         dc.w    2        ;version
  40.         dc.w    39        ;master version
  41.         dc.l    N_SP        ;name
  42.         dc.w    XFDPFF_DATA!XFDPFF_RECOGLEN!XFDPFF_USERTARGET
  43.         dc.w    0
  44.         dc.l    RB_SP        ;recog buffer
  45.         dc.l    DB_SCSP        ;decrunch buffer
  46.         dc.l    0        ;recog segment
  47.         dc.l    0        ;decrunch segment
  48.         dc.w    0
  49.         dc.w    XFDID_SACFPQCruncher
  50.         dc.l    12+2
  51.  
  52. S_SF        dc.l    S_SC        ;next slave
  53.         dc.w    2        ;version
  54.         dc.w    39        ;master version
  55.         dc.l    N_SF        ;name
  56.         dc.w    XFDPFF_DATA!XFDPFF_RECOGLEN!XFDPFF_USERTARGET
  57.         dc.w    0
  58.         dc.l    RB_SF        ;recog buffer
  59.         dc.l    DB_SFSQ        ;decrunch buffer
  60.         dc.l    0        ;recog segment
  61.         dc.l    0        ;decrunch segment
  62.         dc.w    0
  63.         dc.w    XFDID_SACFPQCruncher
  64.         dc.l    12+2
  65.  
  66. S_SC        dc.l    S_SA_1        ;next slave
  67.         dc.w    2        ;version
  68.         dc.w    39        ;master version
  69.         dc.l    N_SC        ;name
  70.         dc.w    XFDPFF_DATA!XFDPFF_RECOGLEN!XFDPFF_USERTARGET
  71.         dc.w    0
  72.         dc.l    RB_SC        ;recog buffer
  73.         dc.l    DB_SCSP        ;decrunch buffer
  74.         dc.l    0        ;recog segment
  75.         dc.l    0        ;decrunch segment
  76.         dc.w    0
  77.         dc.w    XFDID_SACFPQCruncher
  78.         dc.l    12+2
  79.  
  80. S_SA_1        dc.l    S_SA_2        ;next slave
  81.         dc.w    2        ;version
  82.         dc.w    39        ;master version
  83.         dc.l    N_SA_1        ;name
  84.         dc.w    XFDPFF_DATA!XFDPFF_RECOGLEN!XFDPFF_USERTARGET
  85.         dc.w    0
  86.         dc.l    RB_SA_1        ;recog buffer
  87.         dc.l    DB_SA_1        ;decrunch buffer
  88.         dc.l    0        ;recog segment
  89.         dc.l    0        ;decrunch segment
  90.         dc.w    0
  91.         dc.w    XFDID_SACFPQCruncher
  92.         dc.l    12+2
  93.  
  94. S_SA_2        dc.l    S_SA_3        ;next slave
  95.         dc.w    2        ;version
  96.         dc.w    39        ;master version
  97.         dc.l    N_SA_2        ;name
  98.         dc.w    XFDPFF_DATA!XFDPFF_RECOGLEN!XFDPFF_USERTARGET
  99.         dc.w    0
  100.         dc.l    RB_SA_2        ;recog buffer
  101.         dc.l    DB_SA_2        ;decrunch buffer
  102.         dc.l    0        ;recog segment
  103.         dc.l    0        ;decrunch segment
  104.         dc.w    0
  105.         dc.w    XFDID_SACFPQCruncher
  106.         dc.l    12+2
  107.  
  108. S_SA_3        dc.l    0        ;no more slaves
  109.         dc.w    2        ;version
  110.         dc.w    39        ;master version
  111.         dc.l    N_SA_3        ;name
  112.         dc.w    XFDPFF_DATA!XFDPFF_RECOGLEN!XFDPFF_USERTARGET
  113.         dc.w    0
  114.         dc.l    RB_SA_3        ;recog buffer
  115.         dc.l    DB_SA_3        ;decrunch buffer
  116.         dc.l    0        ;recog segment
  117.         dc.l    0        ;decrunch segment
  118.         dc.w    0
  119.         dc.w    XFDID_SACFPQCruncher
  120.         dc.l    12+2
  121.  
  122.     dc.b    "$VER: Magnetic Fields Cruncher 2.1 (09.06.2001) by Wanted Team",0
  123. N_SA_1    dc.b    "Magnetic Fields data cruncher (SA - anim mode 1)",0
  124. N_SA_2    dc.b    "Magnetic Fields data cruncher (SA - anim mode 2)",0
  125. N_SA_3    dc.b    "Magnetic Fields data cruncher (SA - anim mode 3)",0
  126. N_SC    dc.b    "Magnetic Fields data cruncher (SC - colours picture mode)",0
  127. N_SF    dc.b    "Magnetic Fields data cruncher (SF - data file mode)",0
  128. N_SP    dc.b    "Magnetic Fields data cruncher (SP - picture mode)",0
  129. N_SQ    dc.b    "Magnetic Fields data cruncher (SQ - sample mode)",0
  130.     even
  131.  
  132. ;-------------------------------------------------
  133.  
  134. ; Recog buffer function: receives buffer + length in a0/d0
  135.  
  136. RB_SQ
  137.     moveq    #0,D0
  138.     cmp.w    #"SQ",(A0)+
  139.     bne.b    Exit
  140.     tst.b    (A0)
  141.     bne.b    Exit
  142.     move.l    (A0)+,D1
  143.     move.l    D1,xfdrr_FinalTargetLen(A1)
  144.     addq.l    #7,D1
  145.     and.l    #$FFFFFFF8,D1
  146.     moveq    #64,D0                ; extra buffer length
  147.     add.l    D0,D1
  148.     move.l    D1,xfdrr_MinTargetLen(A1)
  149.     move.l    (A0),D1
  150.     and.l    #$00FFFFFF,D1
  151.     moveq    #10,D0
  152.     asl.l    #2,D1
  153.     add.l    D1,D0
  154.     move.l    D0,xfdrr_MinSourceLen(A1)
  155.     moveq    #1,D0
  156. Exit
  157.     rts
  158.  
  159. ; Recog buffer function: receives buffer + length in a0/d0
  160.  
  161. RB_SP    move.l    D2,-(a7)
  162.     moveq    #0,D0
  163.     cmp.w    #"SP",(A0)+
  164.     bne.b    Exit2
  165.     tst.b    (A0)
  166.     bne.b    Exit2
  167.     move.w    (A0)+,D0
  168.     subq.l    #1,D0
  169.     moveq    #0,D1
  170.     move.l    (A0)+,D2
  171. dodaj_1
  172.     add.l    D2,D1
  173.     dbeq    D0,dodaj_1
  174.     move.l    D1,xfdrr_FinalTargetLen(A1)
  175.     add.l    D1,D1
  176.     add.l    #64+16384+8256,D1        ; extra buffer length
  177.     move.l    D1,xfdrr_MinTargetLen(A1)
  178.     moveq    #12,D2
  179.     add.l    (A0),D2
  180.     move.l    D2,xfdrr_MinSourceLen(A1)
  181.     moveq    #1,D0
  182. Exit2    move.l    (A7)+,D2
  183.     rts
  184.  
  185. ; Recog buffer function: receives buffer + length in a0/d0
  186.  
  187. RB_SF
  188.     moveq    #0,D0
  189.     cmp.w    #"SF",(A0)+
  190.     bne.b    Exit3
  191.     tst.b    (A0)
  192.     bne.b    Exit3
  193.     move.l    (A0)+,D1
  194.     move.l    D1,xfdrr_FinalTargetLen(A1)
  195.     moveq    #64,D0                ; extra buffer length
  196.     add.l    D0,D1
  197.     move.l    D1,xfdrr_MinTargetLen(A1)
  198.     tst.b    (A0)
  199.     bne.b    Exit3
  200.     moveq    #10,D0
  201.     add.l    (A0),D0
  202.     move.l    D0,xfdrr_MinSourceLen(A1)
  203.     moveq    #1,D0
  204. Exit3
  205.     rts
  206.  
  207. ; Recog buffer function: receives buffer + length in a0/d0
  208.  
  209. RB_SC    move.l    D2,-(A7)
  210.     moveq    #0,D0
  211.     cmp.w    #"SC",(A0)+
  212.     bne.b    Exit4
  213.     tst.b    (A0)
  214.     bne.b    Exit4
  215.     move.w    (A0)+,D0
  216.     subq.l    #1,D0
  217.     moveq    #0,D1
  218.     move.l    (A0)+,D2
  219. dodaj_2
  220.     add.l    D2,D1
  221.     dbeq    D0,dodaj_2
  222.     move.l    D1,xfdrr_FinalTargetLen(A1)
  223.     add.l    D1,D1
  224.     add.l    #64+16384+8256,D1        ; extra buffer length
  225.     move.l    D1,xfdrr_MinTargetLen(A1)
  226.     moveq    #12,D2
  227.     add.l    (A0),D2
  228.     move.l    D2,xfdrr_MinSourceLen(A1)
  229.     moveq    #1,D0
  230. Exit4    move.l    (A7)+,D2
  231.     rts
  232.  
  233. ; Recog buffer function: receives buffer + length in a0/d0
  234.  
  235. RB_SA_2    movem.l    D2-D4,-(A7)
  236.     moveq    #0,D0
  237.     cmp.w    #"SA",(A0)+
  238.     bne.b    Exit5
  239.     tst.b    (A0)
  240.     bne.b    Exit5
  241.     addq.l    #2,A0
  242.     moveq    #0,D1
  243.     move.w    (A0)+,D1
  244.     tst.b    (A0)
  245.     bne.b    Exit5
  246.     move.l    (A0)+,D2
  247.     move.l    (A0)+,D3
  248.     cmp.l    D3,D2
  249.     ble.b    Exit5
  250.     asl.w    #3,D1
  251.     move.l    4(A0),D4
  252.     add.l    D1,A0
  253.     cmp.l    -4(A0),D4
  254.     bne.b    Exit5
  255.     cmp.l    -12(A0),D4
  256.     bne.b    Exit5
  257.     moveq    #14,D0
  258.     add.l    D1,D0
  259.     add.l    D3,D0
  260.     move.l    D2,xfdrr_FinalTargetLen(A1)
  261.     add.l    #64+16384,D2            ; extra buffer length
  262.     move.l    D2,xfdrr_MinTargetLen(A1)
  263.     move.l    D0,xfdrr_MinSourceLen(A1)
  264.     moveq    #1,D0
  265. Exit5    movem.l    (a7)+,d2-d4
  266.     rts
  267.  
  268. ; Recog buffer function: receives buffer + length in a0/d0
  269.  
  270. RB_SA_3    movem.l    D2-D5/A2,-(A7)
  271.     moveq    #0,D0
  272.     move.l    A0,A2
  273.     cmp.w    #"SA",(A2)+
  274.     bne.w    Exit6
  275.     tst.b    (A2)
  276.     bne.b    Exit6
  277.     addq.l    #2,A2
  278.     moveq    #0,D1
  279.     move.w    (A2)+,D1
  280.     tst.b    (A2)
  281.     bne.b    Exit6
  282.     move.l    (A2)+,D2
  283.     move.l    (A2)+,D3
  284.     cmp.l    D3,D2
  285.     ble.b    Exit6
  286.     asl.w    #3,D1
  287.     move.l    4(A2),D4
  288.     add.l    D1,A2
  289.     cmp.l    -4(A2),D4
  290.     bne.b    OK_SA
  291.     cmp.l    -12(A2),D4
  292.     beq.b    Exit6
  293. OK_SA
  294.     move.l    D2,xfdrr_FinalTargetLen(A1)
  295.     add.l    #64+16384,D2            ; extra buffer length
  296.     move.l    D2,xfdrr_MinTargetLen(A1)
  297.     move.l    A0,A2
  298.  
  299.     MOVE.W    4(A0),D4
  300.     ADDA.W    #14,A0
  301.     SUBQ.W    #1,D4
  302. rbC0000CC    ADDQ.W    #4,A0
  303.     MOVE.L    (A0)+,D2
  304.     SWAP    D2
  305.     LSR.W    #8,D2
  306.     MOVE.W    D2,D5
  307.     LSR.W    #2,D5
  308.     ANDI.W    #3,D2
  309.     BEQ.S    rbC0000E8
  310.     CMPI.W    #3,D2
  311.     BEQ.S    rbC0000E8
  312.     ADD.W    D2,D2
  313.     BRA.S    rbC0000EA
  314.  
  315. rbC0000E8    MOVEQ    #0,D2
  316. rbC0000EA    MOVEQ    #5,D0
  317. rbC0000EC    LSR.W    #1,D5
  318.     BCC.S    rbC0000F2
  319.     ADDQ.W    #4,D2
  320. rbC0000F2    DBRA    D0,rbC0000EC
  321.     ADDQ.W    #2,D2
  322.     ADDA.W    D2,A0
  323.     DBRA    D4,rbC0000CC
  324.     sub.l    A2,A0
  325.     add.l    A0,D3
  326.     move.l    D3,xfdrr_MinSourceLen(A1)
  327.     moveq    #1,D0
  328. Exit6    movem.l    (a7)+,d2-d5/A2
  329.     rts
  330.  
  331.  
  332. ; Recog buffer function: receives buffer + length in a0/d0
  333.  
  334. RB_SA_1    movem.l    d2-d3,-(a7)
  335.     moveq    #0,D0
  336.     cmp.w    #"SA",(A0)+
  337.     bne.b    Exit7
  338.     tst.b    (A0)
  339.     bne.b    Exit7
  340.     move.w    (A0)+,D1
  341.     tst.b    (A0)
  342.     bne.b    Exit7
  343.     move.l    (A0)+,D2
  344.     tst.b    (A0)
  345.     bne.b    Exit7
  346.     move.l    (A0)+,D3
  347.     add.l    D3,A0
  348.     addq.l    #2,A0
  349.     cmp.w    (A0)+,D1
  350.     bne.b    Exit7
  351.     cmp.l    (A0)+,D2
  352.     bne.b    Exit7
  353.     tst.w    (A0)
  354.     bne.b    Exit7
  355.     moveq    #20,D0
  356.     add.l    (A0),D0
  357.     add.l    D3,D0
  358.     move.l    D0,xfdrr_MinSourceLen(A1)
  359.     subq.w    #1,D1
  360.     moveq    #8,D0
  361. dodaj_3
  362.     add.l    D2,D0
  363.     dbeq    D1,dodaj_3
  364.     add.l    (A0),D0
  365.     move.l    D0,xfdrr_FinalTargetLen(A1)
  366.     add.l    #64+16384+8256,D0        ; extra buffer length
  367.     move.l    D0,xfdrr_MinTargetLen(A1)
  368.     moveq    #1,D0
  369. Exit7    movem.l    (a7)+,d2-d3
  370.     rts
  371.  
  372. ;-------------------------------------------------
  373.  
  374. ; Decrunch buffer function: receives bufferinfo in a0
  375. ; This style requires xfdmaster.library V39
  376.  
  377. DB_SA_1
  378.     movem.l    D2-D7/A2-A6,-(A7)
  379.     move.l    A0,A5
  380.     move.l    xfdbi_UserTargetBuf(A5),A1
  381.     move.l    xfdbi_SourceBuffer(A5),A0
  382.     move.l    xfdbi_MinSourceLen(A5),D0
  383.     move.l    xfdbi_FinalTargetLen(A5),D3
  384.     btst    #0,D3
  385.     beq.b    even_1
  386.     addq.l    #1,D3
  387. even_1
  388.     lea    0(A1,D3.L),A3
  389.     lea    64(A3),A2
  390.     lea    16384(A2),A5
  391.     move.l    D0,$828-$7FC(A3)
  392.     bsr.w    D_SA_1
  393.     moveq    #1,D0
  394.     movem.l    (A7)+,D2-D7/A2-A6
  395.     rts
  396.  
  397. ;-------------------------------------------------
  398.  
  399. ; Decrunch buffer function: receives bufferinfo in a0
  400. ; This style requires xfdmaster.library V39
  401.  
  402. DB_SA_2
  403.     movem.l    D2-D7/A2-A6,-(A7)
  404.     move.l    A0,A5
  405.     move.l    xfdbi_UserTargetBuf(A5),A1
  406.     move.l    xfdbi_SourceBuffer(A5),A0
  407.     move.l    xfdbi_MinSourceLen(A5),D0
  408.     move.l    xfdbi_FinalTargetLen(A5),D3
  409.     btst    #0,D3
  410.     beq.b    even_2
  411.     addq.l    #1,D3
  412. even_2
  413.     lea    0(A1,D3.L),A3
  414.     lea    64(A3),A2
  415.     move.l    D0,12(A3)
  416.     bsr.w    D_SA_2
  417.     moveq    #1,D0
  418.     movem.l    (A7)+,D2-D7/A2-A6
  419.     rts
  420.  
  421. ;-------------------------------------------------
  422.  
  423. ; Decrunch buffer function: receives bufferinfo in a0
  424. ; This style requires xfdmaster.library V39
  425.  
  426. DB_SA_3
  427.     movem.l    D2-D7/A2-A6,-(A7)
  428.     move.l    A0,A5
  429.     move.l    xfdbi_UserTargetBuf(A5),A1
  430.     move.l    xfdbi_SourceBuffer(A5),A0
  431.     move.l    xfdbi_MinSourceLen(A5),D0
  432.     move.l    xfdbi_FinalTargetLen(A5),D3
  433.     btst    #0,D3
  434.     beq.b    even_3
  435.     addq.l    #1,D3
  436. even_3
  437.     lea    0(A1,D3.L),A3
  438.     lea    64(A3),A2
  439.     move.l    D0,12(A3)
  440.     bsr.w    D_SA_3
  441.     moveq    #1,D0
  442.     movem.l    (A7)+,D2-D7/A2-A6
  443.     rts
  444.  
  445. ;-------------------------------------------------
  446.  
  447. ; Decrunch buffer function: receives bufferinfo in a0
  448. ; This style requires xfdmaster.library V39
  449.  
  450. DB_SFSQ
  451.     movem.l    D2-D7/A2-A6,-(A7)
  452.     move.l    A0,A5
  453.     move.l    xfdbi_UserTargetBuf(A5),A1
  454.     move.l    xfdbi_SourceBuffer(A5),A0
  455.     move.l    xfdbi_MinSourceLen(A5),D0
  456.     move.l    xfdbi_UserTargetBufLen(A5),D3
  457.     moveq    #64,D2
  458.     sub.l    D2,D3
  459.     btst    #0,D3
  460.     beq.b    even_4
  461.     addq.l    #1,D3
  462. even_4
  463.     lea    0(A1,D3.L),A3
  464.     move.l    D0,12(A3)
  465.     bsr.w    D_SFSQ
  466.     moveq    #1,D0
  467.     movem.l    (A7)+,D2-D7/A2-A6
  468.     rts
  469.  
  470. ;-------------------------------------------------
  471.  
  472. ; Decrunch buffer function: receives bufferinfo in a0
  473. ; This style requires xfdmaster.library V39
  474.  
  475. DB_SCSP
  476.     movem.l    D2-D7/A2-A6,-(A7)
  477.     move.l    A0,A4
  478.     move.l    xfdbi_UserTargetBuf(A4),A1
  479.     move.l    xfdbi_SourceBuffer(A4),A0
  480.     move.l    xfdbi_MinSourceLen(A4),D0
  481.     move.l    xfdbi_TargetBufSaveLen(A4),D3
  482.     add.l    D3,D3
  483.     lea    0(A1,D3.L),A3
  484.     lea    64(A3),A2
  485.     lea    16384(A2),A5
  486.     move.l    D0,12(A3)
  487.     lsr.l    #1,D3
  488.  
  489.     movem.l    D0-A6,-(SP)
  490.     bsr.w    D_SCSP_2
  491.     movem.l    (SP)+,D0-A6
  492.  
  493.     lea    0(A1,D3.L),A1
  494.     move.l    D0,12(A3)
  495.  
  496.     movem.l    D0-A6,-(SP)
  497.     bsr.w    D_SCSP_2
  498.     movem.l    (SP)+,D0-A6
  499.  
  500.     movem.l    D0-A6,-(SP)
  501.     move.l    A1,A2
  502.     sub.l    D3,A1
  503.     move.l    A2,A0
  504. CheckData
  505.     cmp.l    A1,A0
  506.     beq.b    FileOK
  507.     move.b    (A2)+,D0
  508.     cmp.b    (A1)+,D0
  509.     bne.b    Old_Mode
  510.     bra.b    CheckData
  511. FileOK
  512.     cmp.l    #640,D3
  513.     bne.b    NoExcept1
  514.     cmp.l    #'KKK@',154(A0)                ; exception 1
  515.     beq.b    Old_Mode
  516.     bra.b    Correct
  517. NoExcept1
  518.     cmp.l    #40000,D3
  519.     bne.b    Correct
  520.     cmp.l    #'DDDD',16188(A0)            ; exception 2
  521.     beq.b    Old_Mode
  522. Correct
  523.     movem.l    (SP)+,D0-A6
  524. back
  525.     moveq    #1,D0
  526.     movem.l    (A7)+,D2-D7/A2-A6
  527.     rts
  528. Old_Mode
  529.     movem.l    (SP)+,D0-A6
  530.     move.l    D0,$828-$7FC(A3)
  531.     sub.l    D3,A1
  532.     bsr.w    D_SCSP_1
  533.     bra.b    back
  534.  
  535. ;-------------------------------------------------
  536.  
  537. ; Decruncher from game "Crystal Dragon" (c) 1994 by Magnetic Fields
  538.  
  539. *****************************************
  540. *                    *
  541. * descrunch any file            *
  542. *                    *
  543. * from a0 to a1                *
  544. * if pic, 16k buffer needed at a2    *
  545. * if colrs stored palette goes to d1    *
  546. * initial size of file in d0          *
  547. *                     *
  548. * first word                 *
  549. *                     *
  550. * "SA" sout crunched anim file        *
  551. * "SP" sout crunched pic file        *
  552. * "SC" sout crunched pic file + colrs    *
  553. * "SF" sout crunched data file        *
  554. *                    *
  555. * returns length descrunched to in d0.l *
  556. *                    *
  557. *****************************************
  558.  
  559. ;    MOVEA.L    #lbL06439C,A2
  560. ;    MOVE.L    #lbL06839C,D1
  561.  
  562. ;    MOVEM.L    D1-D7/A0-A6,-(SP)
  563. ;    LEA    lbL00070E,A3
  564. ;    MOVE.L    D0,12(A3)
  565. ;    MOVE.W    (A0),D0
  566. ;    CMP.W    #'SQ',D0
  567. ;    BEQ.L    lbC000746
  568. ;    CMP.W    #'SA',D0
  569. ;    BEQ.S    lbC000086
  570. ;    CMP.W    #'SP',D0
  571. ;    BEQ.L    lbC000296
  572. ;    CMP.W    #'SC',D0
  573. ;    BEQ.L    lbC00029C
  574. ;    CMP.W    #'SF',D0
  575. ;    BEQ.L    lbC0005F2
  576. ;    MOVE.L    12(A3),D7
  577. ;    BEQ.S    lbC000046
  578. ;lbC000040    MOVE.B    (A0)+,(A1)+
  579. ;    SUBQ.L    #1,D7
  580. ;    BNE.S    lbC000040
  581. ;lbC000046    MOVE.L    12(A3),D0
  582. ;    MOVEM.L    (SP)+,D1-D7/A0-A6
  583. ;    RTS
  584.  
  585. lbC000050    MOVE.W    $10(A3),D1
  586.     MOVEQ    #0,D7
  587. lbC000056    ADD.L    D0,D0
  588.     BNE.S    lbC000062
  589.     MOVE.L    -(A0),D0
  590.     MOVE.W    #$FFFF,CCR
  591.     ADDX.L    D0,D0
  592. lbC000062    ROXR.B    #1,D7
  593.     DBRA    D1,lbC000056
  594.     RTS
  595.  
  596. lbW00006A    dc.w    0
  597.     dc.w    0
  598.     dc.w    0
  599.     dc.w    7
  600.     dc.w    5
  601.     dc.w    4
  602.     dc.w    4
  603. lbL000078    dc.w    0
  604.     dc.w    0
  605.     dc.w    0
  606.     dc.w    4
  607.     dc.w    4
  608.     dc.w    3
  609.     dc.w    3
  610.  
  611. D_SA_3
  612. lbC000086
  613.     movem.l    D1-D7/A0-A6,-(SP)
  614.  
  615.     MOVEA.L    A1,A4
  616.     MOVE.L    A1,(A3)
  617.     MOVE.W    2(A0),$10(A3)
  618.     MOVE.W    4(A0),$18(A3)
  619.     MOVE.L    6(A0),D1
  620.     MOVE.L    D1,4(A3)
  621.     MOVE.W    $10(A3),D0
  622.     ADD.W    D0,D0
  623.     LEA    lbW00006A(PC),A1
  624.     MOVE.W    0(A1,D0.W),$14(A3)
  625.     LEA    lbL000078(PC),A1
  626.     MOVE.W    0(A1,D0.W),$12(A3)
  627.     MOVE.L    10(A0),D0
  628.     ADDA.W    #14,A0
  629.     MOVE.W    $18(A3),D4
  630.     SUBQ.W    #1,D4
  631.     MOVE.L    D0,-(SP)
  632. lbC0000CC    ADDQ.W    #4,A0
  633.     MOVE.L    (A0)+,D2
  634.     SWAP    D2
  635.     LSR.W    #8,D2
  636.     MOVE.W    D2,D5
  637.     LSR.W    #2,D5
  638.     ANDI.W    #3,D2
  639.     BEQ.S    lbC0000E8
  640.     CMPI.W    #3,D2
  641.     BEQ.S    lbC0000E8
  642.     ADD.W    D2,D2
  643.     BRA.S    lbC0000EA
  644.  
  645. lbC0000E8    MOVEQ    #0,D2
  646. lbC0000EA    MOVEQ    #5,D0
  647. lbC0000EC    LSR.W    #1,D5
  648.     BCC.S    lbC0000F2
  649.     ADDQ.W    #4,D2
  650. lbC0000F2    DBRA    D0,lbC0000EC
  651.     ADDQ.W    #2,D2
  652.     ADDA.W    D2,A0
  653.     DBRA    D4,lbC0000CC
  654.     MOVE.L    (SP)+,D0
  655.     MOVEA.L    A0,A1
  656.     ADDA.L    D0,A0
  657.     MOVE.W    $10(A3),(A4)
  658.     ADDA.L    D1,A4
  659.     CLR.W    $1A(A3)
  660.     SUBQ.W    #1,$10(A3)
  661.     MOVEQ    #0,D2
  662.     MOVE.W    #$4000,D4
  663.     MOVE.W    #$4000,D5
  664.     MOVE.L    -(A0),D0
  665. lbC00011E    MOVE.W    -(A1),D1
  666.     BPL.S    lbC000124
  667.     MOVEQ    #0,D1
  668. lbC000124    ADDQ.W    #8,D1
  669.     SUBA.W    D1,A1
  670.     MOVE.L    A1,-(SP)
  671.     MOVEM.L    D0-D7,-(SP)
  672.     MOVE.L    A1,-(SP)
  673.     MOVE.W    (A1),D1
  674.     MOVE.W    2(A1),D2
  675.     MOVE.W    D1,D3
  676.     ADDI.W    #15,D3
  677.     LSR.W    #4,D3
  678.     MULU.W    D2,D3
  679.     ADD.W    D3,D3
  680.     EXT.L    D3
  681.     MOVE.L    D3,8(A3)
  682.     MOVE.L    4(A1),D7
  683.     MOVE.L    D7,D6
  684.     BSR.L    lbC000252
  685.     MOVE.W    D7,$1C(A3)
  686.     MOVEA.L    A4,A1
  687.     MOVE.W    $1C(A3),D4
  688.     MOVE.L    8(A3),D5
  689.     MULU.W    D5,D4
  690.     SUBA.L    D4,A1
  691.     MOVEA.L    A1,A4
  692.     ADDA.L    8(A3),A4
  693.     MOVE.L    (SP)+,D0
  694.     MOVEM.L    A1/A4,-(SP)
  695.     MOVEA.L    D0,A4
  696.     ADDQ.W    #8,A4
  697.     MOVE.L    D6,D0
  698.     SWAP    D0
  699.     LSR.W    #8,D0
  700.     MOVE.W    D0,-(SP)
  701.     ANDI.W    #3,D0
  702.     BEQ.S    lbC00018E
  703.     CMPI.W    #3,D0
  704.     BEQ.S    lbC00018C
  705.     ADD.W    D0,D0
  706.     BRA.S    lbC00018E
  707.  
  708. lbC00018C    MOVEQ    #0,D0
  709. lbC00018E    MOVE.W    D0,$1E(A3)
  710.         MOVE.W    (SP)+,D0
  711.         LSR.W    #2,D0
  712.         MOVE.W    #6,-(SP)
  713. lbC00019A    LSR.W    #1,D0
  714.     BCC.S    lbC0001A2
  715.     ADDQ.W    #4,$1E(A3)
  716. lbC0001A2    SUBQ.W    #1,(SP)
  717.     BNE.S    lbC00019A
  718.     ADDQ.W    #2,SP
  719.     MOVE.W    $1E(A3),D0
  720.     ADDA.W    D0,A4
  721.     TST.W    D0
  722.     BEQ.S    lbC0001B8
  723. lbC0001B2    MOVE.W    -(A4),-(A1)
  724.     SUBQ.W    #2,D0
  725.     BNE.S    lbC0001B2
  726. lbC0001B8    MOVE.L    D6,-(A1)
  727.     MOVE.W    D3,-(A1)
  728.     MOVE.W    D2,-(A1)
  729.     MOVE.W    D1,-(A1)
  730.     MOVEA.L    (A3),A4
  731.     MOVE.W    $18(A3),D4
  732.     SUB.W    $1A(A3),D4
  733.     SUBQ.W    #1,D4
  734.     LSL.W    #2,D4
  735.     MOVE.L    A1,D5
  736.     SUB.L    A4,D5
  737.     MOVE.L    D5,2(A4,D4.W)
  738.     MOVEM.L    (SP)+,A1/A4
  739.     MOVEM.L    (SP)+,D0-D7
  740.     MOVE.W    $1C(A3),D7
  741.     BNE.S    lbC0001EA
  742.     MOVEA.L    A1,A4
  743.     BRA.S    lbC00022C
  744.  
  745. lbC0001EA    ADD.W    D7,D7
  746.     ADD.W    D7,D7
  747.     LEA    lbW000498(PC),A6
  748.     ADDA.L    (A6,D7.W),A6
  749. lbC0001F6    MOVEQ    #4,D1
  750.     BSR.L    lbC0003A0
  751.     ADD.W    D7,D7
  752.     ADD.W    D7,D7
  753.     MOVE.L    A1,-(SP)
  754.     LEA    lbL000360(PC),A1
  755.     ADDA.L    (A1,D7.W),A1
  756.     JSR    (A1)
  757.     MOVEA.L    (SP)+,A1
  758. lbC00020E    CMPA.L    A4,A1
  759.     BEQ.S    lbC00022C
  760.     CMP.W    #$10,D2
  761.     BCS.S    lbC0001F6
  762.     SUBI.W    #$10,D5
  763.     ANDI.W    #$3FF0,D5
  764.     LEA    (A2,D5.W),A5
  765.     SUBI.W    #$10,D2
  766.     JSR    (A6)
  767.     BRA.S    lbC00020E
  768.  
  769. lbC00022C    MOVE.W    $1E(A3),D1
  770.     SUBA.W    D1,A4
  771.     SUBA.W    #10,A4
  772.     MOVEA.L    (SP)+,A1
  773.     ADDQ.W    #1,$1A(A3)
  774.     MOVE.W    $1A(A3),D1
  775.     CMP.W    $18(A3),D1
  776.     BNE.L    lbC00011E
  777.     MOVE.L    4(A3),D0
  778.     MOVEM.L    (SP)+,D1-D7/A0-A6
  779.     RTS
  780.  
  781. lbC000252    MOVEM.L    D0-D6/A2,-(SP)
  782.     MOVEQ    #1,D2
  783.     MOVE.L    D7,D1
  784.     CLR.W    D1
  785.     ROL.L    #8,D1
  786.     MOVE.W    D1,D3
  787.     LSR.W    #3,D1
  788.     ANDI.W    #7,D3
  789.     BEQ.S    lbC00026A
  790.     SUBQ.W    #1,D2
  791. lbC00026A    MOVEQ    #-1,D0
  792.     MOVEQ    #5,D6
  793. lbC00026E    MOVE.W    D7,D4
  794.     ANDI.W    #15,D4
  795.     CMP.W    #7,D4
  796.     BPL.S    lbC000286
  797.     CMP.W    D0,D4
  798.     BLE.S    lbC000286
  799.     MOVE.W    D4,D0
  800.     LSR.W    #1,D1
  801.     BCS.S    lbC000286
  802.     ADDQ.W    #1,D2
  803. lbC000286    LSR.L    #4,D7
  804.     DBRA    D6,lbC00026E
  805.     MOVEQ    #0,D7
  806.     MOVE.W    D2,D7
  807.     MOVEM.L    (SP)+,D0-D6/A2
  808.     RTS
  809.  
  810. D_SCSP_2
  811.     movem.l    D1-D7/A0-A6,-(SP)
  812.     cmp.w    #'SC',(A0)
  813.     beq.b    lbC00029C
  814.  
  815. lbC000296    CLR.W    $16(A3)
  816.     BRA.S    lbC0002A2
  817.  
  818. lbC00029C    MOVE.W    #1,$16(A3)
  819. lbC0002A2
  820. ;    MOVEA.L    D1,A5
  821.     MOVEA.L    A1,A4
  822.     ADDQ.W    #2,A0
  823.     MOVE.W    (A0)+,$10(A3)
  824.     MOVE.L    (A0)+,8(A3)
  825.     MOVE.W    $10(A3),D0
  826.     ADD.W    D0,D0
  827.     LEA    lbW00006A(PC),A1
  828.     MOVE.W    0(A1,D0.W),$14(A3)
  829.     LEA    lbL000078(PC),A1
  830.     MOVE.W    0(A1,D0.W),$12(A3)
  831.     MOVE.L    (A0)+,D0
  832.     TST.W    $16(A3)
  833.     BEQ.S    lbC0002E2
  834.     MOVEQ    #0,D1
  835.     MOVE.W    $10(A3),D2
  836.     BSET    D2,D1
  837.     SUBQ.W    #1,D1
  838. lbC0002DC    MOVE.W    (A0)+,(A5)+
  839.     DBRA    D1,lbC0002DC
  840. lbC0002E2    ADDA.L    D0,A0
  841.     CLR.L    4(A3)
  842.     MOVEA.L    A4,A1
  843.     ADDA.L    8(A3),A4
  844.     MOVE.W    $10(A3),D7
  845.     MOVEQ    #0,D0
  846. lbC0002F4    ADD.L    8(A3),D0
  847.     SUBQ.W    #1,D7
  848.     BNE.S    lbC0002F4
  849.     ADD.L    D0,4(A3)
  850.     SUBQ.W    #1,$10(A3)
  851.     MOVE.W    $10(A3),D7
  852.     ADDQ.W    #1,D7
  853.     ADD.W    D7,D7
  854.     ADD.W    D7,D7
  855.     LEA    lbW000498(PC),A6
  856.     ADDA.L    0(A6,D7.W),A6
  857.     MOVEQ    #0,D2
  858.     MOVE.W    #$4000,D4
  859.     MOVE.W    #$4000,D5
  860.     MOVE.L    -(A0),D0
  861. lbC000322    MOVEQ    #4,D1
  862.     BSR.S    lbC0003A0
  863.     ADD.W    D7,D7
  864.     ADD.W    D7,D7
  865.     MOVE.L    A1,-(SP)
  866.     LEA    lbL000360(PC),A1
  867.     ADDA.L    0(A1,D7.W),A1
  868.     JSR    (A1)
  869.     MOVEA.L    (SP)+,A1
  870. lbC000338    CMPA.L    A4,A1
  871.     BEQ.S    lbC000356
  872.     CMP.W    #$10,D2
  873.     BCS.S    lbC000322
  874.     SUBI.W    #$10,D5
  875.     ANDI.W    #$3FF0,D5
  876.     LEA    0(A2,D5.W),A5
  877.     SUBI.W    #$10,D2
  878.     JSR    (A6)
  879.     BRA.S    lbC000338
  880.  
  881. lbC000356    MOVEM.L    (SP)+,D1-D7/A0-A6
  882.     MOVE.L    4(A3),D0
  883.     RTS
  884.  
  885. lbL000360    dc.l    Label_1-lbL000360
  886.     dc.l    Label_2-lbL000360
  887.     dc.l    Label_3-lbL000360
  888.     dc.l    Label_4-lbL000360
  889.     dc.l    Label_5-lbL000360
  890.     dc.l    Label_6-lbL000360
  891.     dc.l    Label_7-lbL000360
  892.     dc.l    Label_8-lbL000360
  893.     dc.l    Label_9-lbL000360
  894.     dc.l    Label_10-lbL000360
  895.     dc.l    Label_11-lbL000360
  896.     dc.l    Label_12-lbL000360
  897.     dc.l    Label_13-lbL000360
  898.     dc.l    Label_14-lbL000360
  899.     dc.l    Label_15-lbL000360
  900.     dc.l    Label_16-lbL000360
  901.  
  902. lbC0003A0    SUBQ.W    #1,D1
  903.     MOVEQ    #0,D7
  904. lbC0003A4    ADD.L    D0,D0
  905.     BNE.S    lbC0003B0
  906.     MOVE.L    -(A0),D0
  907.     MOVE.W    #$FFFF,CCR
  908.     ADDX.L    D0,D0
  909. lbC0003B0    ADDX.W    D7,D7
  910.     DBRA    D1,lbC0003A4
  911.     RTS
  912.  
  913. Label_1
  914.     MOVEQ    #0,D6
  915.     BRA.S    lbC00040A
  916. Label_2
  917.     MOVEQ    #1,D6
  918.     BRA.S    lbC00040A
  919. Label_3
  920.     MOVEQ    #2,D6
  921.     BRA.S    lbC00040A
  922. Label_4
  923.     MOVEQ    #3,D6
  924.     BRA.S    lbC00040A
  925. Label_5
  926.     MOVEQ    #4,D6
  927.     BRA.S    lbC00040A
  928. Label_6
  929.     MOVEQ    #5,D6
  930.     BRA.S    lbC00040A
  931. Label_7
  932.     MOVEQ    #1,D1
  933.     BSR.S    lbC0003A0
  934.     MOVEQ    #6,D6
  935.     ADD.W    D7,D6
  936.     BRA.S    lbC00040A
  937. Label_8
  938.     MOVEQ    #1,D1
  939.     BSR.S    lbC0003A0
  940.     MOVEQ    #8,D6
  941.     ADD.W    D7,D6
  942.     BRA.S    lbC00040A
  943. Label_9
  944.     MOVEQ    #2,D1
  945.     BSR.S    lbC0003A0
  946.     MOVEQ    #10,D6
  947.     ADD.W    D7,D6
  948.     BRA.S    lbC00040A
  949. Label_10
  950.     MOVEQ    #3,D1
  951.     BSR.S    lbC0003A0
  952.     MOVEQ    #14,D6
  953.     ADD.W    D7,D6
  954.     BRA.S    lbC00040A
  955. Label_11
  956.     MOVEQ    #5,D1
  957.     BSR.S    lbC0003A0
  958.     MOVEQ    #$16,D6
  959.     ADD.W    D7,D6
  960.     BRA.S    lbC00040A
  961. Label_12
  962.     MOVEQ    #8,D1
  963.     BSR.S    lbC0003A0
  964.     MOVEQ    #$36,D6
  965.     ADD.W    D7,D6
  966. lbC00040A    ADD.W    $14(A3),D6
  967.     MOVEQ    #1,D1
  968.     BSR.S    lbC0003A0
  969.     MOVEQ    #14,D1
  970.     TST.W    D7
  971.     BNE.S    lbC00041A
  972.     MOVEQ    #9,D1
  973. lbC00041A    BSR.S    lbC0003A0
  974.     ADD.W    D4,D7
  975.     MOVE.W    D7,D3
  976.     ANDI.W    #$3FFF,D3
  977.     SUBQ.W    #1,D6
  978. lbC000426    SUBQ.W    #1,D3
  979.     ANDI.W    #$3FFF,D3
  980.     MOVE.B    0(A2,D3.W),D7
  981.     SUBQ.W    #1,D4
  982.     ANDI.W    #$3FFF,D4
  983.     MOVE.B    D7,0(A2,D4.W)
  984.     ADDQ.L    #1,D2
  985.     DBRA    D6,lbC000426
  986.     RTS
  987. Label_13
  988.     MOVEQ    #4,D1
  989.     BSR.L    lbC0003A0
  990.     MOVE.W    D7,D6
  991.     BRA.S    lbC000456
  992. Label_14
  993.     MOVEQ    #8,D1
  994.     BSR.L    lbC0003A0
  995.     MOVEQ    #$10,D6
  996.     ADD.W    D7,D6
  997. lbC000456    ADD.W    $12(A3),D6
  998.     BSR.L    lbC000050
  999.     SUBQ.W    #1,D6
  1000. lbC000460    SUBQ.W    #1,D4
  1001.     ANDI.W    #$3FFF,D4
  1002.     MOVE.B    D7,0(A2,D4.W)
  1003.     ADDQ.L    #1,D2
  1004.     DBRA    D6,lbC000460
  1005.     RTS
  1006. Label_15
  1007.     MOVEQ    #1,D6
  1008.     BRA.S    lbC000480
  1009. Label_16
  1010.     MOVEQ    #3,D1
  1011.     BSR.L    lbC0003A0
  1012.     MOVEQ    #2,D6
  1013.     ADD.W    D7,D6
  1014. lbC000480    SUBQ.W    #1,D6
  1015. lbC000482    BSR.L    lbC000050
  1016.     SUBQ.W    #1,D4
  1017.     ANDI.W    #$3FFF,D4
  1018.     MOVE.B    D7,0(A2,D4.W)
  1019.     ADDQ.L    #1,D2
  1020.     DBRA    D6,lbC000482
  1021.     RTS
  1022.  
  1023. lbW000498
  1024.     dc.l    Label_23-lbW000498
  1025.     dc.l    Label_22-lbW000498
  1026.     dc.l    Label_21-lbW000498
  1027.     dc.l    Label_20-lbW000498
  1028.     dc.l    Label_19-lbW000498
  1029.     dc.l    Label_18-lbW000498
  1030.     dc.l    Label_17-lbW000498
  1031.  
  1032. Label_17
  1033.     MOVEM.L    D0/D2/D4/D5,-(SP)
  1034.     MOVEQ    #15,D0
  1035. lbC0004BA    MOVE.B    (A5)+,D1
  1036.     ADD.B    D1,D1
  1037.     ADDX.W    D2,D2
  1038.     ADD.B    D1,D1
  1039.     ADDX.W    D3,D3
  1040.     ADD.B    D1,D1
  1041.     ADDX.W    D4,D4
  1042.     ADD.B    D1,D1
  1043.     ADDX.W    D5,D5
  1044.     ADD.B    D1,D1
  1045.     ADDX.W    D6,D6
  1046.     ADD.B    D1,D1
  1047.     ADDX.W    D7,D7
  1048.     DBRA    D0,lbC0004BA
  1049.     MOVE.L    8(A3),D1
  1050.     MOVE.W    D2,-(A4)
  1051.     ADDA.L    D1,A4
  1052.     MOVE.W    D3,(A4)
  1053.     ADDA.L    D1,A4
  1054.     MOVE.W    D4,(A4)
  1055.     ADDA.L    D1,A4
  1056.     MOVE.W    D5,(A4)
  1057.     ADDA.L    D1,A4
  1058.     MOVE.W    D6,(A4)
  1059.     ADDA.L    D1,A4
  1060.     MOVE.W    D7,(A4)
  1061.     SUBA.L    D1,A4
  1062.     SUBA.L    D1,A4
  1063.     SUBA.L    D1,A4
  1064.     SUBA.L    D1,A4
  1065.     SUBA.L    D1,A4
  1066.     MOVEM.L    (SP)+,D0/D2/D4/D5
  1067.     RTS
  1068.  
  1069. Label_18
  1070.     MOVEM.L    D0/D2/D4/D5,-(SP)
  1071.     MOVEQ    #15,D0
  1072. lbC000508    MOVE.B    (A5)+,D1
  1073.     ADD.B    D1,D1
  1074.     ADDX.W    D2,D2
  1075.     ADD.B    D1,D1
  1076.     ADDX.W    D3,D3
  1077.     ADD.B    D1,D1
  1078.     ADDX.W    D4,D4
  1079.     ADD.B    D1,D1
  1080.     ADDX.W    D5,D5
  1081.     ADD.B    D1,D1
  1082.     ADDX.W    D6,D6
  1083.     DBRA    D0,lbC000508
  1084.     MOVE.L    8(A3),D1
  1085.     MOVE.W    D2,-(A4)
  1086.     ADDA.L    D1,A4
  1087.     MOVE.W    D3,(A4)
  1088.     ADDA.L    D1,A4
  1089.     MOVE.W    D4,(A4)
  1090.     ADDA.L    D1,A4
  1091.     MOVE.W    D5,(A4)
  1092.     ADDA.L    D1,A4
  1093.     MOVE.W    D6,(A4)
  1094.     SUBA.L    D1,A4
  1095.     SUBA.L    D1,A4
  1096.     SUBA.L    D1,A4
  1097.     SUBA.L    D1,A4
  1098.     MOVEM.L    (SP)+,D0/D2/D4/D5
  1099.     RTS
  1100.  
  1101. Label_19
  1102.     MOVEM.L    D0/D2/D4/D5,-(SP)
  1103.     MOVEQ    #15,D0
  1104. lbC00054C    MOVE.B    (A5)+,D1
  1105.     ADD.B    D1,D1
  1106.     ADDX.W    D2,D2
  1107.     ADD.B    D1,D1
  1108.     ADDX.W    D3,D3
  1109.     ADD.B    D1,D1
  1110.     ADDX.W    D4,D4
  1111.     ADD.B    D1,D1
  1112.     ADDX.W    D5,D5
  1113.     DBRA    D0,lbC00054C
  1114.     MOVE.L    8(A3),D1
  1115.     MOVE.W    D2,-(A4)
  1116.     ADDA.L    D1,A4
  1117.     MOVE.W    D3,(A4)
  1118.     ADDA.L    D1,A4
  1119.     MOVE.W    D4,(A4)
  1120.     ADDA.L    D1,A4
  1121.     MOVE.W    D5,(A4)
  1122.     SUBA.L    D1,A4
  1123.     SUBA.L    D1,A4
  1124.     SUBA.L    D1,A4
  1125.     MOVEM.L    (SP)+,D0/D2/D4/D5
  1126.     RTS
  1127.  
  1128. Label_20
  1129.     MOVEM.L    D0/D2/D4,-(SP)
  1130.     MOVEQ    #15,D0
  1131. lbC000586    MOVE.B    (A5)+,D1
  1132.     ADD.B    D1,D1
  1133.     ADDX.W    D2,D2
  1134.     ADD.B    D1,D1
  1135.     ADDX.W    D3,D3
  1136.     ADD.B    D1,D1
  1137.     ADDX.W    D4,D4
  1138.     DBRA    D0,lbC000586
  1139.     MOVE.L    8(A3),D1
  1140.     MOVE.W    D2,-(A4)
  1141.     ADDA.L    D1,A4
  1142.     MOVE.W    D3,(A4)
  1143.     ADDA.L    D1,A4
  1144.     MOVE.W    D4,(A4)
  1145.     SUBA.L    D1,A4
  1146.     SUBA.L    D1,A4
  1147.     MOVEM.L    (SP)+,D0/D2/D4
  1148.     RTS
  1149.  
  1150. Label_21
  1151.     MOVEM.L    D0/D2/D4,-(SP)
  1152.     MOVEQ    #15,D0
  1153. lbC0005B6    MOVE.B    (A5)+,D1
  1154.     ADD.B    D1,D1
  1155.     ADDX.W    D2,D2
  1156.     ADD.B    D1,D1
  1157.     ADDX.W    D3,D3
  1158.     DBRA    D0,lbC0005B6
  1159.     MOVE.L    8(A3),D1
  1160.     MOVE.W    D2,-(A4)
  1161.     ADDA.L    D1,A4
  1162.     MOVE.W    D3,(A4)
  1163.     SUBA.L    D1,A4
  1164.     MOVEM.L    (SP)+,D0/D2/D4
  1165.     RTS
  1166.  
  1167. Label_22
  1168.     MOVEM.L    D0/D2/D4,-(SP)
  1169.     MOVEQ    #15,D0
  1170. lbC0005DC    MOVE.B    (A5)+,D1
  1171.     ADD.B    D1,D1
  1172.     ADDX.W    D2,D2
  1173.     DBRA    D0,lbC0005DC
  1174.     MOVE.L    8(A3),D1
  1175.     MOVE.W    D2,-(A4)
  1176.     MOVEM.L    (SP)+,D0/D2/D4
  1177. Label_23
  1178.     RTS
  1179.  
  1180. D_SFSQ
  1181.     movem.l    D1-D7/A0-A6,-(SP)
  1182.     cmp.w    #'SQ',(A0)
  1183.     beq.w    lbC000746
  1184.  
  1185. lbC0005F2    MOVEA.L    A1,A4
  1186.     MOVEA.L    A0,A2
  1187.     LEA    10(A2),A1
  1188.     MOVEA.L    A4,A5
  1189.     MOVE.L    2(A0),D0
  1190.     MOVEA.L    D0,A6
  1191.     ADDA.L    D0,A4
  1192.     MOVE.L    6(A0),D2
  1193.     ADDA.L    D2,A0
  1194.     MOVE.L    D2,D7
  1195.     ADDQ.L    #3,D7
  1196.     LSR.L    #2,D7
  1197.     SUBQ.L    #1,D7
  1198. lbC000612    MOVE.L    (A1)+,(A2)+
  1199.     DBRA    D7,lbC000612
  1200.     MOVE.B    -(A0),D0
  1201. lbC00061A    ADD.B    D0,D0
  1202.     BNE.S    lbC000626
  1203.     MOVE.B    -(A0),D0
  1204.     MOVE.W    #$FFFF,CCR
  1205.     ADDX.B    D0,D0
  1206. lbC000626    BCC.L    lbC0006CC
  1207.     ADD.B    D0,D0
  1208.     BNE.S    lbC000636
  1209.     MOVE.B    -(A0),D0
  1210.     MOVE.W    #$FFFF,CCR
  1211.     ADDX.B    D0,D0
  1212. lbC000636    BCC.S    lbC000698
  1213.     ADD.B    D0,D0
  1214.     BNE.S    lbC000644
  1215.     MOVE.B    -(A0),D0
  1216.     MOVE.W    #$FFFF,CCR
  1217.     ADDX.B    D0,D0
  1218. lbC000644    BCC.S    lbC00069E
  1219.     ADD.B    D0,D0
  1220.     BNE.S    lbC000652
  1221.     MOVE.B    -(A0),D0
  1222.     MOVE.W    #$FFFF,CCR
  1223.     ADDX.B    D0,D0
  1224. lbC000652    BCC.S    lbC0006A4
  1225.     ADD.B    D0,D0
  1226.     BNE.S    lbC000660
  1227.     MOVE.B    -(A0),D0
  1228.     MOVE.W    #$FFFF,CCR
  1229.     ADDX.B    D0,D0
  1230. lbC000660    BCC.S    lbC000666
  1231.     MOVEQ    #9,D4
  1232.     BRA.S    lbC000668
  1233.  
  1234. lbC000666    MOVEQ    #14,D4
  1235. lbC000668    MOVEQ    #1,D2
  1236.     MOVEQ    #1,D3
  1237.     MOVEQ    #5,D5
  1238. lbC00066E    MOVE.W    D2,D1
  1239.     SUBQ.W    #1,D1
  1240.     MOVEQ    #0,D7
  1241. lbC000674    ADD.B    D0,D0
  1242.     BNE.S    lbC000680
  1243.     MOVE.B    -(A0),D0
  1244.     MOVE.W    #$FFFF,CCR
  1245.     ADDX.B    D0,D0
  1246. lbC000680    ADDX.W    D7,D7
  1247.     DBRA    D1,lbC000674
  1248.     ADD.W    D7,D5
  1249.     CMP.W    D3,D7
  1250.     BNE.S    lbC000694
  1251.     ADDQ.W    #1,D2
  1252.     ADD.W    D3,D3
  1253.     ADDQ.W    #1,D3
  1254.     BRA.S    lbC00066E
  1255.  
  1256. lbC000694    MOVE.W    D4,D1
  1257.     BRA.S    lbC0006A8
  1258.  
  1259. lbC000698    MOVEQ    #9,D1
  1260.     MOVEQ    #2,D5
  1261.     BRA.S    lbC0006A8
  1262.  
  1263. lbC00069E    MOVEQ    #10,D1
  1264.     MOVEQ    #3,D5
  1265.     BRA.S    lbC0006A8
  1266.  
  1267. lbC0006A4    MOVEQ    #12,D1
  1268.     MOVEQ    #4,D5
  1269. lbC0006A8    SUBQ.W    #1,D1
  1270.     MOVEQ    #0,D7
  1271. lbC0006AC    ADD.B    D0,D0
  1272.     BNE.S    lbC0006B8
  1273.     MOVE.B    -(A0),D0
  1274.     MOVE.W    #$FFFF,CCR
  1275.     ADDX.B    D0,D0
  1276. lbC0006B8    ADDX.W    D7,D7
  1277.     DBRA    D1,lbC0006AC
  1278.     LEA    0(A4,D7.W),A2
  1279.     SUBQ.W    #1,D5
  1280. lbC0006C4    MOVE.B    -(A2),-(A4)
  1281.     DBRA    D5,lbC0006C4
  1282.     BRA.S    lbC000700
  1283.  
  1284. lbC0006CC    MOVEQ    #1,D2
  1285.     MOVEQ    #1,D3
  1286.     MOVEQ    #1,D6
  1287. lbC0006D2    MOVE.W    D2,D1
  1288.     SUBQ.W    #1,D1
  1289.     MOVEQ    #0,D7
  1290. lbC0006D8    ADD.B    D0,D0
  1291.     BNE.S    lbC0006E4
  1292.     MOVE.B    -(A0),D0
  1293.     MOVE.W    #$FFFF,CCR
  1294.     ADDX.B    D0,D0
  1295. lbC0006E4    ADDX.W    D7,D7
  1296.     DBRA    D1,lbC0006D8
  1297.     ADD.W    D7,D6
  1298.     CMP.W    D3,D7
  1299.     BNE.S    lbC0006F8
  1300.     ADDQ.W    #1,D2
  1301.     ADD.W    D3,D3
  1302.     ADDQ.W    #1,D3
  1303.     BRA.S    lbC0006D2
  1304.  
  1305. lbC0006F8    SUBQ.W    #1,D6
  1306. lbC0006FA    MOVE.B    -(A0),-(A4)
  1307.     DBRA    D6,lbC0006FA
  1308. lbC000700    CMPA.L    A5,A4
  1309.     BNE.L    lbC00061A
  1310.     MOVE.L    A6,D0
  1311.     MOVEM.L    (SP)+,D1-D7/A0-A6
  1312.     RTS
  1313.  
  1314. ;lbL00070E    dc.l    0
  1315. ;    dc.l    0
  1316. ;    dc.l    0
  1317. ;    dc.l    0
  1318. ;    dc.l    0
  1319. ;    dc.l    0
  1320. ;    dc.l    0
  1321. ;    dc.l    0
  1322.  
  1323. lbC00072E    SUBQ.W    #1,D1
  1324.     MOVEQ    #0,D7
  1325. lbC000732    ADD.L    D0,D0
  1326.     BNE.S    lbC00073E
  1327.     MOVE.L    -(A0),D0
  1328.     MOVE.W    #$FFFF,CCR
  1329.     ADDX.L    D0,D0
  1330. lbC00073E    ADDX.W    D7,D7
  1331.     DBRA    D1,lbC000732
  1332.     RTS
  1333.  
  1334. lbC000746    MOVEA.L    A1,A2
  1335.     ADDQ.l    #2,A0
  1336.     MOVE.L    (A0)+,D0
  1337.     MOVE.L    D0,-(SP)
  1338.     ADDQ.l    #7,D0
  1339.     ANDI.L    #$FFFFFFF8,D0
  1340.     ADDA.L    D0,A1
  1341.     MOVE.L    (A0)+,D0
  1342.     MOVE.L    D0,D1
  1343.     ANDI.L    #$FFFFFF,D0
  1344.     LSL.L    #2,D0
  1345.     ADDA.L    D0,A0
  1346.     MOVE.L    -(A0),D0
  1347.     LSR.L    #8,D1
  1348.     SWAP    D1
  1349.     MOVE.W    D1,-(SP)
  1350.     MOVEQ    #3,D1
  1351.     BSR.S    lbC00072E
  1352.     MOVE.W    D7,D6
  1353.     ADDQ.W    #1,D6
  1354. lbC000776    MOVE.W    #7,D5
  1355. lbC00077A    MOVE.W    D6,D1
  1356.     BSR.S    lbC00072E
  1357.     MOVE.B    D7,-(A1)
  1358.     DBRA    D5,lbC00077A
  1359.     MOVEQ    #0,D4
  1360. lbC000786    ADD.L    D0,D0
  1361.     BNE.S    lbC000792
  1362.     MOVE.L    -(A0),D0
  1363.     MOVE.W    #$FFFF,CCR
  1364.     ADDX.L    D0,D0
  1365. lbC000792    BCC.S    lbC000798
  1366.     ADDQ.W    #1,D4
  1367.     BRA.S    lbC000786
  1368.  
  1369. lbC000798    ADDQ.W    #1,D4
  1370.     LSR.W    #1,D4
  1371.     BCS.S    lbC0007A0
  1372.     NEG.W    D4
  1373. lbC0007A0    SUB.W    D4,D6
  1374.     CMPA.L    A2,A1
  1375.     BNE.S    lbC000776
  1376.     MOVE.W    (SP)+,D1
  1377.     MOVE.L    (SP),D0
  1378.     CMP.W    #1,D1
  1379.     BEQ.S    lbC0007F8
  1380.     CMP.W    #2,D1
  1381.     BEQ.S    lbC0007BC
  1382.     CMP.W    #3,D1
  1383.     BEQ.S    lbC0007D8
  1384. lbC0007BC    MOVEQ    #0,D4
  1385. lbC0007BE    MOVE.B    (A2),D1
  1386.     LSR.B    #1,D1
  1387.     BCC.S    lbC0007C8
  1388.     NEG.B    D1
  1389.     SUBQ.B    #1,D1
  1390. lbC0007C8    ADD.B    D1,D4
  1391.     MOVE.B    D4,(A2)+
  1392.     SUBQ.L    #1,D0
  1393.     BNE.S    lbC0007BE
  1394.     MOVE.L    (SP)+,D0
  1395.     MOVEM.L    (SP)+,D1-D7/A0-A6
  1396.     RTS
  1397.  
  1398. lbC0007D8    MOVEQ    #0,D4
  1399.     MOVEQ    #0,D5
  1400. lbC0007DC    MOVE.B    (A2),D1
  1401.     LSR.B    #1,D1
  1402.     BCC.S    lbC0007E6
  1403.     NEG.B    D1
  1404.     SUBQ.B    #1,D1
  1405. lbC0007E6    ADD.B    D1,D4
  1406.     ADD.B    D4,D5
  1407.     MOVE.B    D5,(A2)+
  1408.     SUBQ.L    #1,D0
  1409.     BNE.S    lbC0007DC
  1410.     MOVE.L    (SP)+,D0
  1411.     MOVEM.L    (SP)+,D1-D7/A0-A6
  1412.     RTS
  1413.  
  1414. lbC0007F8    MOVEQ    #0,D4
  1415. lbC0007FA    MOVE.B    (A2),D1
  1416.     LSR.B    #1,D1
  1417.     BCC.S    lbC000804
  1418.     NEG.B    D1
  1419.     SUBQ.B    #1,D1
  1420. lbC000804    MOVE.B    D1,(A2)+
  1421.     SUBQ.L    #1,D0
  1422.     BNE.S    lbC0007FA
  1423.     MOVE.L    (SP)+,D0
  1424.     MOVEM.L    (SP)+,D1-D7/A0-A6
  1425.     RTS
  1426.  
  1427. ; Modified SA decruncher from game "Kid Chaos" (c) 1993 by Magnetic Fields
  1428.  
  1429. D_SA_2
  1430.     movem.l    D1-D7/A0-A6,-(SP)
  1431.  
  1432.     MOVEA.L    A1,A4
  1433.     MOVE.L    A1,(A3)
  1434.     MOVE.W    2(A0),$10(A3)
  1435.     MOVE.W    4(A0),$18(A3)
  1436.     MOVE.L    6(A0),D1
  1437.     MOVE.L    D1,4(A3)
  1438.     MOVE.W    $10(A3),D0
  1439.     ADD.W    D0,D0
  1440.     LEA    lbW00006A(PC),A1
  1441.     MOVE.W    0(A1,D0.W),$14(A3)
  1442.     LEA    lbL000078(PC),A1
  1443.     MOVE.W    0(A1,D0.W),$12(A3)
  1444.     MOVE.L    10(A0),D0
  1445.     ADDA.W    #14,A0
  1446.     MOVE.W    $18(A3),D2
  1447.     ASL.W    #3,D2
  1448.     ADDA.W    D2,A0
  1449.     MOVEA.L    A0,A1
  1450.     ADDA.L    D0,A0
  1451.     MOVE.W    $10(A3),(A4)
  1452.     ADDA.L    D1,A4
  1453.     CLR.W    $1A(A3)
  1454.     SUBQ.W    #1,$10(A3)
  1455.     MOVEQ    #0,D2
  1456.     MOVE.W    #$4000,D4
  1457.     MOVE.W    #$4000,D5
  1458.     MOVE.L    -(A0),D0
  1459. abC001A36    SUBQ.L    #8,A1
  1460.     MOVE.L    A1,-(SP)
  1461.     MOVEM.L    D0-D7,-(SP)
  1462.     MOVE.W    (A1),D1
  1463.     MOVE.W    2(A1),D2
  1464.     MOVE.W    D1,D3
  1465.     ADDI.W    #15,D3
  1466.     LSR.W    #4,D3
  1467.     MULU.W    D2,D3
  1468.     ADD.W    D3,D3
  1469.     EXT.L    D3
  1470.     MOVE.L    D3,8(A3)
  1471.     MOVE.L    4(A1),D7
  1472.     MOVE.L    D7,D6
  1473.     BSR.L    abC001B0A
  1474.     MOVE.W    D7,$1C(A3)
  1475.     MOVEA.L    A4,A1
  1476.     MOVE.W    $1C(A3),D4
  1477.     MOVE.L    8(A3),D5
  1478.     MULU.W    D5,D4
  1479.     SUBA.L    D4,A1
  1480.     MOVEA.L    A1,A4
  1481.     ADDA.L    8(A3),A4
  1482.     SUBA.W    #10,A1
  1483.     MOVE.L    A4,-(SP)
  1484.     MOVEA.L    (A3),A4
  1485.     MOVE.W    $18(A3),D4
  1486.     SUB.W    $1A(A3),D4
  1487.     SUBQ.W    #1,D4
  1488.     LSL.W    #2,D4
  1489.     MOVE.L    A1,D5
  1490.     SUB.L    A4,D5
  1491.     MOVE.L    D5,2(A4,D4.W)
  1492.     MOVEA.L    (SP)+,A4
  1493.     MOVE.W    D1,(A1)+
  1494.     MOVE.W    D2,(A1)+
  1495.     MOVE.W    D3,(A1)+
  1496.     MOVE.L    D6,(A1)+
  1497.     MOVEM.L    (SP)+,D0-D7
  1498.     MOVE.W    $1C(A3),D7
  1499.     ADD.W    D7,D7
  1500.     ADD.W    D7,D7
  1501.     LEA    lbW000498(PC),A6
  1502.     ADDA.L    0(A6,D7.W),A6
  1503. abC001AB4    MOVEQ    #4,D1
  1504.     BSR.L    lbC0003A0
  1505.     ADD.W    D7,D7
  1506.     ADD.W    D7,D7
  1507.     MOVE.L    A1,-(SP)
  1508.     LEA    lbL000360(PC),A1
  1509.     ADDA.L    0(A1,D7.W),A1
  1510.     JSR    (A1)
  1511.     MOVEA.L    (SP)+,A1
  1512. abC001ACC    CMPA.L    A4,A1
  1513.     BEQ.S    abC001AEA
  1514.     CMP.W    #$10,D2
  1515.     BCS.S    abC001AB4
  1516.     SUBI.W    #$10,D5
  1517.     ANDI.W    #$3FF0,D5
  1518.     LEA    0(A2,D5.W),A5
  1519.     SUBI.W    #$10,D2
  1520.     JSR    (A6)
  1521.     BRA.S    abC001ACC
  1522.  
  1523. abC001AEA    SUBA.W    #10,A4
  1524.     MOVEA.L    (SP)+,A1
  1525.     ADDQ.W    #1,$1A(A3)
  1526.     MOVE.W    $1A(A3),D1
  1527.     CMP.W    $18(A3),D1
  1528.     BNE.L    abC001A36
  1529.     MOVEM.L    (SP)+,D1-D7/A0-A6
  1530.     MOVE.L    4(A3),D0
  1531.     RTS
  1532.  
  1533. abC001B0A    MOVEM.L    D0-D6/A2,-(SP)
  1534.     MOVE.W    $10(A3),D6
  1535.     MOVEQ    #-1,D2
  1536. abC001B14    MOVE.L    D7,D0
  1537.     ANDI.W    #15,D0
  1538.     CMP.W    #7,D0
  1539.     BPL.S    abC001B26
  1540.     CMP.W    D2,D0
  1541.     BMI.S    abC001B26
  1542.     MOVE.W    D0,D2
  1543. abC001B26    LSR.L    #4,D7
  1544.     SUBQ.W    #1,D6
  1545.     BNE.S    abC001B14
  1546.     ADDQ.W    #1,D2
  1547.     ADDQ.W    #1,D2
  1548.     MOVE.W    D2,D7
  1549.     MOVEM.L    (SP)+,D0-D6/A2
  1550.     RTS
  1551.  
  1552. ; Decruncher from game "Lotus 2" (c) 1991 by Magnetic Fields
  1553.  
  1554. ;    MOVEA.L    #lbL06439C,A2
  1555. ;    MOVE.L    #lbL06839C,D1
  1556. ;    lea    Extra,A3
  1557. ;    CLR.W    $7FC-$7FC(A3)
  1558. ;    MOVE.L    D0,$828-$7FC(A3)
  1559. ;    MOVEA.L    D1,A5
  1560. ;    MOVE.W    (A0),D0
  1561. ;    CMPI.W    #'SA',D0
  1562. ;    BEQ.S    nlC000736
  1563. ;    CMPI.W    #'SP',D0
  1564. ;    BEQ.S    nlC000736
  1565. ;    CMPI.W    #'SC',D0
  1566. ;    BEQ.S    nlC00073C
  1567. ;    CMPI.W    #$5346,D0
  1568. ;    BEQ.L    nlC000A66
  1569. ;    MOVE.L    $828-$7FC(A3),D7
  1570. ;    BEQ.S    nlC00070E
  1571. ;nlC000708    MOVE.B    (A0)+,(A1)+
  1572. ;    SUBQ.L    #1,D7
  1573. ;    BNE.S    nlC000708
  1574. ;nlC00070E    MOVE.L    $828-$7FC(A3),D0
  1575. ;    RTS
  1576.  
  1577. nlC000714    MOVE.W    $820-$7FC(A3),D1
  1578.     MOVEQ    #0,D7
  1579. nlC00071A    ADD.L    D0,D0
  1580.     BNE.S    nlC000726
  1581.     MOVE.L    -(A0),D0
  1582.     MOVE.W    #$FFFF,CCR
  1583.     ADDX.L    D0,D0
  1584. nlC000726    ROXR.B    #1,D7
  1585.     DBRA    D1,nlC00071A
  1586.     RTS
  1587.  
  1588. nlW00072E    dc.w    $705
  1589.     dc.w    $404
  1590.     dc.w    $404
  1591.     dc.w    $303
  1592.  
  1593. D_SCSP_1
  1594.     cmp.w    #'SC',(A0)
  1595.     beq.b    nlC00073C
  1596. D_SA_1
  1597. nlC000736    CLR.W    $822-$7FC(A3)
  1598.     BRA.S    nlC000742
  1599.  
  1600. nlC00073C    MOVE.W    #1,$822-$7FC(A3)
  1601. nlC000742    MOVEM.L    D1-D7/A0-A6,-(SP)
  1602. ;    MOVEA.L    D1,A5
  1603.     MOVEA.L    A1,A4
  1604.     MOVEQ    #0,D7
  1605.     CMPI.W    #'SA',(A0)+
  1606.     BNE.S    nlC000754
  1607.     MOVEQ    #-1,D7
  1608. nlC000754    MOVE.W    (A0)+,$820-$7FC(A3)
  1609. ;    MOVE.L    (A0)+,$82C-$7FC(A3)
  1610.  
  1611.     move.l    (A0)+,8(A3)
  1612.  
  1613.     MOVE.W    $820-$7FC(A3),D0
  1614.     LEA    nlW00072E(PC),A1
  1615.     CLR.B    $824-$7FC(A3)
  1616.     CLR.B    $826-$7FC(A3)
  1617.     MOVE.B    -3(A1,D0.W),$825-$7FC(A3)
  1618.     MOVE.B    1(A1,D0.W),$827-$7FC(A3)
  1619.     MOVE.L    (A0)+,D0
  1620.     TST.W    $822-$7FC(A3)
  1621.     BEQ.S    nlC000790
  1622.     MOVEQ    #0,D1
  1623.     MOVE.W    $820-$7FC(A3),D2
  1624.     BSET    D2,D1
  1625.     SUBQ.W    #1,D1
  1626. nlC00078A    MOVE.W    (A0)+,(A5)+
  1627.     DBRA    D1,nlC00078A
  1628. nlC000790    ADDA.L    D0,A0
  1629.     CLR.L    $830-$7FC(A3)
  1630.     TST.L    D7
  1631.     BEQ.S    nlC0007AC
  1632.     MOVEA.L    A0,A1
  1633.     MOVE.L    8(A1),D0
  1634.     ADDQ.L    #8,D0
  1635.     MOVE.L    D0,$830-$7FC(A3)
  1636. nlC0007A6    MOVE.B    (A1)+,(A4)+
  1637.     SUBQ.L    #1,D0
  1638.     BNE.S    nlC0007A6
  1639. nlC0007AC    MOVEA.L    A4,A1
  1640. ;    ADDA.L    $82C-$7FC(A3),A4
  1641.  
  1642.     add.l    8(A3),A4
  1643.  
  1644.     MOVE.W    $820-$7FC(A3),D7
  1645.     MOVEQ    #0,D0
  1646. nlC0007B8
  1647. ;    ADD.L    $82C-$7FC(A3),D0
  1648.  
  1649.     add.l    8(A3),D0
  1650.  
  1651.     SUBQ.W    #1,D7
  1652.     BNE.S    nlC0007B8
  1653.     ADD.L    D0,$830-$7FC(A3)
  1654.     SUBQ.W    #1,$820-$7FC(A3)
  1655.     MOVE.W    $820-$7FC(A3),D7
  1656.     ADD.W    D7,D7
  1657.     ADD.W    D7,D7
  1658.     LEA    nlC000952(PC),A6
  1659.     ADDA.L    0(A6,D7.W),A6
  1660.     ADDQ.L    #8,A6
  1661.     MOVEQ    #0,D2
  1662.     MOVE.W    #$4000,D4
  1663.     MOVE.W    #$4000,D5
  1664.     MOVE.L    -(A0),D0
  1665. nlC0007E6
  1666. ;    TST.W    $7FC-$7FC(A3)
  1667. ;    BNE.L    nlC000BA0
  1668.     MOVEQ    #4,D1
  1669.     BSR.S    nlC00086C
  1670.     ADD.W    D7,D7
  1671.     ADD.W    D7,D7
  1672.     MOVE.L    A1,-(SP)
  1673.     LEA    nlL00082C(PC),A1
  1674.     ADDA.L    0(A1,D7.W),A1
  1675.     JSR    (A1)
  1676.     MOVEA.L    (SP)+,A1
  1677. nlC000804    CMPA.L    A4,A1
  1678.     BEQ.S    nlC000822
  1679.     CMPI.W    #$10,D2
  1680.     BCS.S    nlC0007E6
  1681.     SUBI.W    #$10,D5
  1682.     ANDI.W    #$3FF0,D5
  1683.     LEA    0(A2,D5.W),A5
  1684.     SUBI.W    #$10,D2
  1685.     JSR    (A6)
  1686.     BRA.S    nlC000804
  1687.  
  1688. nlC000822    MOVEM.L    (SP)+,D1-D7/A0-A6
  1689.     MOVE.L    $830-$7FC(A3),D0
  1690.     RTS
  1691.  
  1692. nlL00082C    dc.l    Label24-nlL00082C
  1693.     dc.l    Label25-nlL00082C
  1694.     dc.l    Label26-nlL00082C
  1695.     dc.l    Label27-nlL00082C
  1696.     dc.l    Label28-nlL00082C
  1697.     dc.l    Label29-nlL00082C
  1698.     dc.l    Label30-nlL00082C
  1699.     dc.l    Label31-nlL00082C
  1700.     dc.l    Label32-nlL00082C
  1701.     dc.l    Label33-nlL00082C
  1702.     dc.l    Label34-nlL00082C
  1703.     dc.l    Label35-nlL00082C
  1704.     dc.l    Label36-nlL00082C
  1705.     dc.l    Label37-nlL00082C
  1706.     dc.l    Label38-nlL00082C
  1707.     dc.l    Label39-nlL00082C
  1708.  
  1709. nlC00086C    SUBQ.W    #1,D1
  1710.     MOVEQ    #0,D7
  1711. nlC000870    ADD.L    D0,D0
  1712.     BNE.S    nlC00087C
  1713.     MOVE.L    -(A0),D0
  1714.     MOVE.W    #$FFFF,CCR
  1715.     ADDX.L    D0,D0
  1716. nlC00087C    ADDX.W    D7,D7
  1717.     DBRA    D1,nlC000870
  1718.     RTS
  1719. Label24
  1720.     MOVEQ    #0,D6
  1721.     BRA.S    nlC0008D6
  1722. Label25
  1723.     MOVEQ    #1,D6
  1724.     BRA.S    nlC0008D6
  1725. Label26
  1726.     MOVEQ    #2,D6
  1727.     BRA.S    nlC0008D6
  1728. Label27
  1729.     MOVEQ    #3,D6
  1730.     BRA.S    nlC0008D6
  1731. Label28
  1732.     MOVEQ    #4,D6
  1733.     BRA.S    nlC0008D6
  1734. Label29
  1735.     MOVEQ    #5,D6
  1736.     BRA.S    nlC0008D6
  1737. Label30
  1738.     MOVEQ    #1,D1
  1739.     BSR.S    nlC00086C
  1740.     MOVEQ    #6,D6
  1741.     ADD.W    D7,D6
  1742.     BRA.S    nlC0008D6
  1743. Label31
  1744.     MOVEQ    #1,D1
  1745.     BSR.S    nlC00086C
  1746.     MOVEQ    #8,D6
  1747.     ADD.W    D7,D6
  1748.     BRA.S    nlC0008D6
  1749. Label32
  1750.     MOVEQ    #2,D1
  1751.     BSR.S    nlC00086C
  1752.     MOVEQ    #10,D6
  1753.     ADD.W    D7,D6
  1754.     BRA.S    nlC0008D6
  1755. Label33
  1756.     MOVEQ    #3,D1
  1757.     BSR.S    nlC00086C
  1758.     MOVEQ    #14,D6
  1759.     ADD.W    D7,D6
  1760.     BRA.S    nlC0008D6
  1761. Label34
  1762.     MOVEQ    #5,D1
  1763.     BSR.S    nlC00086C
  1764.     MOVEQ    #$16,D6
  1765.     ADD.W    D7,D6
  1766.     BRA.S    nlC0008D6
  1767. Label35
  1768.     MOVEQ    #8,D1
  1769.     BSR.S    nlC00086C
  1770.     MOVEQ    #$36,D6
  1771.     ADD.W    D7,D6
  1772. nlC0008D6    ADD.W    $824-$7FC(A3),D6
  1773.     MOVEQ    #14,D1
  1774.     BSR.S    nlC00086C
  1775.     ADD.W    D4,D7
  1776.     MOVE.W    D7,D3
  1777.     ANDI.W    #$3FFF,D3
  1778.     SUBQ.W    #1,D6
  1779. nlC0008E8    SUBQ.W    #1,D3
  1780.     ANDI.W    #$3FFF,D3
  1781.     MOVE.B    0(A2,D3.W),D7
  1782.     SUBQ.W    #1,D4
  1783.     ANDI.W    #$3FFF,D4
  1784.     MOVE.B    D7,0(A2,D4.W)
  1785.     ADDQ.L    #1,D2
  1786.     DBRA    D6,nlC0008E8
  1787.     RTS
  1788. Label36
  1789.     MOVEQ    #4,D1
  1790.     BSR.L    nlC00086C
  1791.     MOVE.W    D7,D6
  1792.     BRA.S    nlC000918
  1793. Label37
  1794.     MOVEQ    #8,D1
  1795.     BSR.L    nlC00086C
  1796.     MOVEQ    #$10,D6
  1797.     ADD.W    D7,D6
  1798. nlC000918    ADD.W    $826-$7FC(A3),D6
  1799.     BSR.L    nlC000714
  1800.     SUBQ.W    #1,D6
  1801. nlC000922    SUBQ.W    #1,D4
  1802.     ANDI.W    #$3FFF,D4
  1803.     MOVE.B    D7,0(A2,D4.W)
  1804.     ADDQ.L    #1,D2
  1805.     DBRA    D6,nlC000922
  1806.     RTS
  1807. Label38
  1808.     MOVEQ    #1,D6
  1809.     BRA.S    nlC000942
  1810. Label39
  1811.     MOVEQ    #3,D1
  1812.     BSR.L    nlC00086C
  1813.     MOVEQ    #2,D6
  1814.     ADD.W    D7,D6
  1815. nlC000942    SUBQ.W    #1,D6
  1816. nlC000944    BSR.L    nlC000714
  1817.     SUBQ.W    #1,D4
  1818.     ANDI.W    #$3FFF,D4
  1819.     MOVE.B    D7,0(A2,D4.W)
  1820. nlC000952    ADDQ.L    #1,D2
  1821.     DBRA    D6,nlC000944
  1822.     RTS
  1823. nlC00095x
  1824. ;    dc.l    Label43-nlC00095x
  1825. ;    dc.l    Label42-nlC00095x
  1826. ;    dc.l    Label41-nlC00095x
  1827. ;    dc.l    Label40-nlC00095x
  1828.  
  1829.     dc.l    Label_20-nlC00095x
  1830.     dc.l    Label_19-nlC00095x
  1831.     dc.l    Label_18-nlC00095x
  1832.     dc.l    Label_17-nlC00095x
  1833.  
  1834. ;Label40
  1835. ;    MOVEM.L    D0/D2/D4/D5,-(SP)
  1836. ;    MOVEQ    #15,D0
  1837. ;nlC000970    MOVE.B    (A5)+,D1
  1838. ;    ADD.B    D1,D1
  1839. ;    ADDX.W    D2,D2
  1840. ;    ADD.B    D1,D1
  1841. ;    ADDX.W    D3,D3
  1842. ;    ADD.B    D1,D1
  1843. ;    ADDX.W    D4,D4
  1844. ;    ADD.B    D1,D1
  1845. ;    ADDX.W    D5,D5
  1846. ;    ADD.B    D1,D1
  1847. ;    ADDX.W    D6,D6
  1848. ;    ADD.B    D1,D1
  1849. ;    ADDX.W    D7,D7
  1850. ;    DBRA    D0,nlC000970
  1851. ;    MOVE.L    $82C-$7FC(A3),D1
  1852. ;    MOVE.W    D2,-(A4)
  1853. ;    ADDA.L    D1,A4
  1854. ;    MOVE.W    D3,(A4)
  1855. ;    ADDA.L    D1,A4
  1856. ;    MOVE.W    D4,(A4)
  1857. ;    ADDA.L    D1,A4
  1858. ;    MOVE.W    D5,(A4)
  1859. ;    ADDA.L    D1,A4
  1860. ;    MOVE.W    D6,(A4)
  1861. ;    ADDA.L    D1,A4
  1862. ;    MOVE.W    D7,(A4)
  1863. ;    SUBA.L    D1,A4
  1864. ;    SUBA.L    D1,A4
  1865. ;    SUBA.L    D1,A4
  1866. ;    SUBA.L    D1,A4
  1867. ;    SUBA.L    D1,A4
  1868. ;    MOVEM.L    (SP)+,D0/D2/D4/D5
  1869. ;    RTS
  1870.  
  1871. ;Label41
  1872. ;    MOVEM.L    D0/D2/D4/D5,-(SP)
  1873. ;    MOVEQ    #15,D0
  1874. ;nlC0009BE    MOVE.B    (A5)+,D1
  1875. ;    ADD.B    D1,D1
  1876. ;    ADDX.W    D2,D2
  1877. ;    ADD.B    D1,D1
  1878. ;    ADDX.W    D3,D3
  1879. ;    ADD.B    D1,D1
  1880. ;    ADDX.W    D4,D4
  1881. ;    ADD.B    D1,D1
  1882. ;    ADDX.W    D5,D5
  1883. ;    ADD.B    D1,D1
  1884. ;    ADDX.W    D6,D6
  1885. ;    DBRA    D0,nlC0009BE
  1886. ;    MOVE.L    $82C-$7FC(A3),D1
  1887. ;    MOVE.W    D2,-(A4)
  1888. ;    ADDA.L    D1,A4
  1889. ;    MOVE.W    D3,(A4)
  1890. ;    ADDA.L    D1,A4
  1891. ;    MOVE.W    D4,(A4)
  1892. ;    ADDA.L    D1,A4
  1893. ;    MOVE.W    D5,(A4)
  1894. ;    ADDA.L    D1,A4
  1895. ;    MOVE.W    D6,(A4)
  1896. ;    SUBA.L    D1,A4
  1897. ;    SUBA.L    D1,A4
  1898. ;    SUBA.L    D1,A4
  1899. ;    SUBA.L    D1,A4
  1900. ;    MOVEM.L    (SP)+,D0/D2/D4/D5
  1901. ;    RTS
  1902.  
  1903. ;Label42
  1904. ;    MOVEM.L    D0/D2/D4/D5,-(SP)
  1905. ;    MOVEQ    #15,D0
  1906. ;nlC000A02    MOVE.B    (A5)+,D1
  1907. ;    ADD.B    D1,D1
  1908. ;    ADDX.W    D2,D2
  1909. ;    ADD.B    D1,D1
  1910. ;    ADDX.W    D3,D3
  1911. ;    ADD.B    D1,D1
  1912. ;    ADDX.W    D4,D4
  1913. ;    ADD.B    D1,D1
  1914. ;    ADDX.W    D5,D5
  1915. ;    DBRA    D0,nlC000A02
  1916. ;    MOVE.L    $82C-$7FC(A3),D1
  1917. ;    MOVE.W    D2,-(A4)
  1918. ;    ADDA.L    D1,A4
  1919. ;    MOVE.W    D3,(A4)
  1920. ;    ADDA.L    D1,A4
  1921. ;    MOVE.W    D4,(A4)
  1922. ;    ADDA.L    D1,A4
  1923. ;    MOVE.W    D5,(A4)
  1924. ;    SUBA.L    D1,A4
  1925. ;    SUBA.L    D1,A4
  1926. ;    SUBA.L    D1,A4
  1927. ;    MOVEM.L    (SP)+,D0/D2/D4/D5
  1928. ;    RTS
  1929.  
  1930. ;Label43
  1931. ;    MOVEM.L    D0/D2/D4,-(SP)
  1932. ;    MOVEQ    #15,D0
  1933. ;nlC000A3C    MOVE.B    (A5)+,D1
  1934. ;    ADD.B    D1,D1
  1935. ;    ADDX.W    D2,D2
  1936. ;    ADD.B    D1,D1
  1937. ;    ADDX.W    D3,D3
  1938. ;    ADD.B    D1,D1
  1939. ;    ADDX.W    D4,D4
  1940. ;    DBRA    D0,nlC000A3C
  1941. ;    MOVE.L    $82C-$7FC(A3),D1
  1942. ;    MOVE.W    D2,-(A4)
  1943. ;    ADDA.L    D1,A4
  1944. ;    MOVE.W    D3,(A4)
  1945. ;    ADDA.L    D1,A4
  1946. ;    MOVE.W    D4,(A4)
  1947. ;    SUBA.L    D1,A4
  1948. ;    SUBA.L    D1,A4
  1949. ;    MOVEM.L    (SP)+,D0/D2/D4
  1950. ;    RTS
  1951.  
  1952. ;    Section    Buffer,BSS
  1953.  
  1954. ;lbL06439C    ds.l    $1000
  1955. ;lbL06839C    ds.l    $810
  1956. ;Extra        ds.b    64
  1957.